import type { VbenFormSchema } from '#/adapter/form';
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { ModianVisitorLogApi } from '#/api/moxi/modianvisitorlog';
import Dayjs from 'dayjs';

// import { handleTree } from '@vben/utils';

// import { z } from '#/adapter/form';
// import { getDeptList } from '#/api/system/dept';
// import { getSimplePostList } from '#/api/system/post';
// import { getSimpleRoleList } from '#/api/system/role';
import {
    getRangePickerDefaultProps,
} from '#/utils';

/** 列表的搜索表单 */
export function useGridFormSchema(): VbenFormSchema[] {
    return [
        {
            fieldName: 'visitorName',
            label: '访客姓名',
            component: 'Input',
            componentProps: {
                placeholder: '请输入访客姓名',
                allowClear: true,
            },
        },
        {
            fieldName: 'allTime',
            label: '时间',
            component: 'RangePicker',
            componentProps: {
                ...getRangePickerDefaultProps(),
                allowClear: true,
            },
        },
    ];
}

/** 列表的字段 */
export function useGridColumns<T = ModianVisitorLogApi.ModianVisitorLog>(
    onStatusChange?: (
        newStatus: number,
        row: T,
    ) => PromiseLike<boolean | undefined>,
): VxeTableGridOptions['columns'] {
    return [
        {
            field: 'id',
            title: '序号',
        },
        {
            field: 'visitorName',
            title: '访客姓名',
        },
        {
            field: 'visitorMobile',
            title: '访客手机号',
        },
        {
            field: 'startTime',
            title: '到访时间',
            formatter: ({ cellValue }) => {
                return cellValue ? Dayjs(cellValue).format('YYYY-MM-DD HH:mm') : '';
            },
        },
        {
            field: 'endTime',
            title: '离开时间',
            formatter: ({ cellValue }) => {
                return cellValue ? Dayjs(cellValue).format('YYYY-MM-DD HH:mm') : '';
            },
        },
        {
            field: 'visitDuration',
            title: '预计访问时长(h)',
            formatter: ({ row }) => {
                return Dayjs(row.endTime).diff(Dayjs(row.startTime), 'hour') + 'h';
            },
        },
        {
            field: 'visitorIdcard',
            title: '访客身份证号',
        },
        {
            field: 'respondentId',
            title: ' 被访问人名称',
            formatter: ({ row }) => {
                return row ? row.respondent.name : '';
            },
        },
        {
            field: 'addressAlias',
            title: '被访问人部门',
            formatter: ({ row }) => {
                return row?.respondent?.deptNames?.split(',').pop()?.trim() || '';
            },
        },
        {
            field: 'visitCause',
            title: ' 来访目的',
        },
        // {
        //   field: 'requstStatus',
        //   title: '预约状态',
        //   formatter: ({ cellValue }) => {
        //     const statusMap = {
        //       0: '已提交',
        //       1: '已完成',
        //       2: '已取消'
        //     };
        //     return statusMap[cellValue as keyof typeof statusMap] || '未知状态';
        //   },
        // },
        // {
        //   field: 'approvalStatus',
        //   title: '审批状态',
        //   formatter: ({ cellValue }) => {
        //     const statusMap = {
        //       0: '审批中',
        //       1: '通过',
        //       2: '驳回'
        //     };
        //     return statusMap[cellValue as keyof typeof statusMap] || '未知状态';
        //   },
        // },
        // {
        //     field: 'sendSms',
        //     title: '是否发送短信',
        // },
        // {
        //     field: 'userType',
        //     title: '用户类',
        // },
        {
            field: 'visitorCompany',
            title: '访客公司',
        },
        {
            title: '操作',
            width: 180,
            fixed: 'right',
            slots: { default: 'actions' },
        },
    ];
}
